import redis
from flask import request, g
from common.utils.jwt_utils import check_token,_generate_token

def jwt_authentication():
    """
    验证token
    在获取用户信息前验证前端发起请求携带的token,是否和后端生成的一样
    """
    token = request.headers.get('Authorization')
    if token:
        payload = check_token(token[4:])
        print('auth payload--->', payload)
        if payload:
            # token 校验成功, 把用户id 写入g 对象
            # print('g.user_id--->',payload.get('id'))
            g.user_id = payload.get('id')
            print('g.user_id---->',g.user_id)
            # 判断是否是刷新生成的token, 获取不到返回false
            g.is_refresh = payload.get('is_refresh', False)
            print("g.is_fresh===>", g.is_refresh)
        else:
            # 此时没有校验通过
            # 现在token过期
            """
            需要重新生成token
            """
            payload_ = {
                'is_refresh': True
            }
            _, refresh_token = _generate_token(payload_, is_refresh=True)
            # 把生成的刷新token重新给请求头中的token
            request.headers['Authorization'] = refresh_token